A finite state machine (FSM) is a model of behavior composed of a finite number of states, transitions between those states, and actions. A state stores information about the past. A transition causes a state change subsequent to the fulfillment of an enabling condition. An action is an activity that is to be performed at a given moment. Actions may occur when entering the state, when exiting the state, when input conditions are met in the present state, or when performing a particular transition. A FSM can be represented using a state transition diagram or table and implemented using computer software and/or hardware.
FSMs are well known in the art and have been widely employed for many years, since the seminal papers of Mealy “A Method to Synthesizing Sequential Circuits” (1955) and Moore “Gedanken-experiments on Sequential Machines” (1956) first appeared. FSMs have been used in modeling of application behavior, design of hardware digital systems, software engineering, compilers, network protocols, and the study of computation and languages.
A FSM instance is an independent entity, whereby the state, transitions and actions of one FSM instance have no effect on the state, transitions and actions of another FSM instance, even though each may be an instance of the same FSM definition (or FSM type or simply FSM).
One very simple FSM definition may represent the state of a vehicle's headlights. When the “on” transition occurs, the state is changed to “lights-on”, and when the “off” transition occurs, the state is changed to “lights-off”. A corresponding action may transform an FSM instance's logical representation of the state of the lights into reality for the corresponding physical vehicle. That is, when the FSM instance (logical representation) enters the “lights-on” state, the corresponding vehicle's lights actually turn on (physical action). Furthermore, two instances of the same FSM have no effect on each other. Thus the state, transitions, and actions of one ‘lights’ FSM instance have no effect on the state, transitions, and actions of another ‘lights’ FSM instance. For example, the FSM instance of a first vehicle may cause its lights to turn on and off, but it will have no effect on a second vehicle. FSM instances have no effect on each other. This includes multiple instances of the same FSM definition and instances of different FSM definitions.